//
// Created by Administrator on 2020/7/8.
//数据的共享及保护
//多文件结构和预编译命令
//C++程序的一般组织结构：
//一个工程可以划分为多个源文件：类声明文件(.h文件)|类实现文件(.cpp文件)|类的使用文件(main()所在的.cpp文件)   然后再利用工程组合各个文件
//-------------文件1,类的定义,Point.h--------------//
class Point//类的定义
{
public://外部接口
    Point(int x=0,int y=0):x(x),y(y){}
    Point(const Point &p);
    ~Point(){count--;}
    int getX()const{return x;}
    int getY()const{return y;}
    static void showCount();//静态函数成员
private://私有数据成员
    int x,y;
    static int count;//静态数据成员
};

//-------------文件2,类的实现,Point.cpp--------------//
/*
#include "Point.h"
#include <iostream>
using namespace std;

int Point::count=0;//使用类名初始化静态数据成员

Point::Point(const Point &p):x(p.x),y(p.y)
{
    count++;
}

void Point::showCount()
{
    cout<<"Object count="<<count<<endl;
}
*/
//-------------文件3,主函数,main.cpp--------------//
/*
#include "Point.h"
#include <iostream>
using namespace std;

int main()
{
    Point a(4,5);//定义对象a,其构造函数会使count增1
    cout<<"Point A:"<<a.getX()<<","<<a.getY();
    Point::showCount();//输出对象的个数
    Point b(a);//定义对象b,其构造函数会使count增1
    cout<<"Point B:"<<b.getX()<<","<<b.getY();
    Point::showCount();//输出对象的个数
    return 0;
}
*/
